/*
 * 描          述:  <描述>
 * 修  改   人:  Administrator
 * 修改时间:  2020年2月17日
 * <修改描述:>
 */
package com.tx.component.attachment.model;

import org.springframework.beans.BeanUtils;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tx.component.file.catalog.VitualFileCatalog;
import com.tx.component.file.catalog.VitualFileCatalogPermissionEnum;
import com.tx.component.file.context.FileContext;
import com.tx.component.file.resource.FCResource;
import com.tx.core.exceptions.util.AssertUtils;

/**
 * 附件实例详情<br/>
 * <功能详细描述>
 * 
 * @author  Administrator
 * @version  [版本号, 2020年2月17日]
 * @see  [相关类/方法]
 */
public class AttachmentDetail extends AttachmentInstance {
    
    /** 注释内容 */
    private static final long serialVersionUID = -8141568121516092510L;
    
    /** 访问路径 */
    private String viewUrl;
    
    /** 文件访问授权 */
    @JsonIgnore
    private VitualFileCatalogPermissionEnum permission;
    
    /** 文件访问的真正路径：由FileContext加工后才会生成，非持久化字段 */
    @JsonIgnore
    private FCResource resource;
    
    /** <默认构造函数> */
    public AttachmentDetail() {
        super();
    }
    
    /** <默认构造函数> */
    public AttachmentDetail(AttachmentInstance attachment) {
        super();
        
        BeanUtils.copyProperties(attachment, this);
        
        AssertUtils.notEmpty(getCatalog(), "catalog is empty.");
        VitualFileCatalog vfc = FileContext.getEngine()
                .getVitualFileCatalog(getCatalog());
        
        if (vfc != null) {
            this.viewUrl = vfc.getViewUrl(getRelativePath());
            this.resource = vfc.getResource(getRelativePath());
            this.permission = vfc.getPermission();
        }
    }
    
    /**
     * @return 返回 permission
     */
    public VitualFileCatalogPermissionEnum getPermission() {
        return permission;
    }
    
    /**
     * @param 对permission进行赋值
     */
    public void setPermission(VitualFileCatalogPermissionEnum permission) {
        this.permission = permission;
    }
    
    /**
     * @return 返回 viewUrl
     */
    public String getViewUrl() {
        return viewUrl;
    }
    
    /**
     * @param 对viewUrl进行赋值
     */
    public void setViewUrl(String viewUrl) {
        this.viewUrl = viewUrl;
    }
    
    /**
     * @return 返回 resource
     */
    public FCResource getResource() {
        return resource;
    }
    
    /**
     * @param 对resource进行赋值
     */
    public void setResource(FCResource resource) {
        this.resource = resource;
    }
    
}
